﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tracy.DataModel;
using System.IO;
using System.Xml;
using SharedLib.Helpers;

namespace Tracy.DataServices
{
    public class EntryProvider : SharedLib.DataServices.XmlDataProvider <Entry>
    {
        //private const string ENTRY_FILE = "Data\\Entries.xml";
        //XmlDocument doc;
        //XmlElement root;

        //public string GetMaxID()
        //{
        //    return root.GetAttribute("max-id");
        //}

        //public void LoadItems()
        //{
        //    if(!Directory.Exists ("Data")){
        //        Directory.CreateDirectory ("Data");
        //    }

        //    doc = new XmlDocument();
        //    if (!File.Exists(ENTRY_FILE))
        //    {
        //        root = doc.AppendChild(doc.CreateElement("entries")) as XmlElement;
        //        root.SetAttribute("max-id", "0");
        //        doc.Save(ENTRY_FILE);
        //    }
        //    else
        //    {
        //        doc.Load(ENTRY_FILE);
        //        root = doc.SelectSingleNode("entries") as XmlElement;
        //        if (root == null) throw new Exception("Root Node \"entries\" not found!");
        //    }
        //}

        //public void SaveItems()
        //{
            
        //    doc.Save(ENTRY_FILE);
        //}

        //public List<Entry> GetItems()
        //{
        //    List<Entry> rtn = new List<Entry>();
        //    foreach (XmlNode node in doc.SelectNodes("entries/entry"))
        //    {
        //        rtn.Add(new Entry(node));
        //    }
        //    return rtn;
        //}

        //private XmlElement GetNodeByID(string id)
        //{
        //    return doc.SelectSingleNode(String.Format("entries/entry[@id='{0}']", id)) as XmlElement ;
        //}

        //public Entry GetItemByID(string id)
        //{
        //    XmlNode node = GetNodeByID(id);
        //    if (node == null) return null;
        //    return new Entry(node);
        //}

        //public void AddItem(Entry rawItem)
        //{
        //    int maxID = Convert.ToInt32(GetMaxID()) + 1;
        //    rawItem.ID = maxID.ToString();
        //    XmlElement node = rawItem.ToXmlNode(doc);
        //    root.AppendChild(node);

        //    SaveItems();
        //}

        //public void UpdateItem(Entry item)
        //{
        //    XmlNode oldNode = GetNodeByID(item.ID);
        //    if (oldNode == null)
        //    {
        //        AddItem(item);
        //    }
        //    else
        //    {
        //        XmlHelper.UpdateXmlNode(item.ToXmlNode(doc), oldNode);
        //    }

        //    SaveItems();
        //}

        //public void RemoveItem(string id)
        //{
        //    XmlNode oldNode = GetNodeByID(id);
        //    if (oldNode != null)
        //    {
        //        root.RemoveChild(oldNode);
        //    }

        //    SaveItems();
        //}

        public override string FileName
        {
            get { return "Entries.xml"; }
        }

        public override string RootNodeName
        {
            get { return "entries"; }
        }

        public override string DataItemPath
        {
            get { return "entries/entry"; }
        }
    }
}
